<?php

/**
 * Allow taxonomy term ID(s) as argument
 */
class views_handler_argument_term_node_tid extends views_handler_argument_many_to_one {

    function option_definition() {
        $options = parent::option_definition();
        $options['set_breadcrumb'] = array('default' => FALSE);
        return $options;
    }

    function options_form(&$form, &$form_state) {
        parent::options_form($form, $form_state);
        $form['set_breadcrumb'] = array(
            '#type' => 'checkbox',
            '#title' => t("Set the breadcrumb for the term parents"),
            '#description' => t('If selected, the breadcrumb trail will include all parent terms, each one linking to this view. Note that this only works if just one term was received.'),
            '#default_value' => !empty($this->options['set_breadcrumb']),
        );
    }

    function set_breadcrumb(&$breadcrumb) {
        if (empty($this->options['set_breadcrumb']) || !is_numeric($this->argument)) {
            return;
        }

        return views_taxonomy_set_breadcrumb($breadcrumb, $this);
    }

    function title_query() {
        $titles = array();
        $placeholders = implode(', ', array_fill(0, sizeof($this->value), '%d'));

        $result = db_query("SELECT name FROM {term_data} WHERE tid IN ($placeholders)", $this->value);
        while ($term = db_fetch_object($result)) {
            $titles[] = check_plain($term->name);
        }
        return $titles;
    }

}

